#include <iostream>
using namespace std;

/*
    1.模板不能共同，每个模板都要声明一个模板参数
    
    2.模板函数可以部分使用模板，部分使用具体类型
        定义多个模板参数，必须全部都要使用上，不能只使用部分
    3.模板函数的写法：
        1.写在主函数前面：
            template <typename T1 > 
            auto add(T1 a, int b){}
            main(){}
        2.写在主函数后面：
            template <typename T1 >
            auto add(T1 a, int b);
            main(){}
            template <typename T1 >
            auto add(T1 a, int b){}

*/
template <typename T1 >
auto add(T1 a, int b)
{
    cout << a << " " << b << endl;
    return a + b;
}
// 求基本数据类型的平方
template <typename T>
auto func(T a)
{
    cout << a * a << endl;
}
int main()
{
    int n1 = 10;
    double n2 = 20.5;
    cout << add(n2, n1) << endl;
    cout << "-------------------------"<< endl;
    func(n1);
    func(n2);
    func('a');

    return 0;
}